Skip to content

security: clear Dependabot alert #2 (critical wish SCP path traversal) + harden VS Code dev deps - #618

Merged
jeduden merged 2 commits into
mainfrom
claude/wizardly-albattani-enivm8
Jun 14, 2026
Merged

security: clear Dependabot alert #2 (critical wish SCP path traversal) + harden VS Code dev deps#618
jeduden merged 2 commits into
mainfrom
claude/wizardly-albattani-enivm8

Conversation

@jeduden

@jeduden jeduden commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Dependabot alert #2 — critical wish SCP path traversal (CVE-2026-41589)

Closes #617.

Alert #2 (the only open alert on the default branch) flags github.com/charmbracelet/wish v1.4.7 in tools/go.mod for CVE-2026-41589 / GHSA-xjvp-7243-rg9h — a critical (CVSS 9.6) path traversal in wish's SCP middleware.

Why an in-place bump/replace is impossible (as documented in #617):

Fact Detail
Patched v1 None — the fix ships only as charm.land/wish/v2 >= 2.0.1, a different module path
replace? No — Go replace cannot alias across different module paths
Latest vhs v0.11.0 still requires wish v1.4.7 (upstream hasn't migrated)

Fix: drop the vhs dev tool from tools/go.mod. wish is pulled in only as an indirect dependency of vhs, which:

  • is never compiled into the mdsmith binary, and
  • is never invoked through go tool -modfile=tools/go.mod vhs — the demo workflow installs a prebuilt vhs release binary (record-demo.yml).

Removing vhs from the tool directive and running go mod tidy drops wish plus ~38 other indirect modules (258 → 219), clearing the alert with no impact on the shipped binary or CI. vhs was also the only thing forcing tools/go.mod to Go 1.25.8, so the floor drops to 1.25.0 (matching go.mod). Docs that listed vhs as a tools/go.mod tool are updated.

Verified: golangci-lint (v2.8.0) and gobco still build and run from the trimmed modfile; osv-scanner confirms GHSA-xjvp-7243-rg9h is gone; mdsmith check . passes.

Secondary: VS Code extension dev-dependency hardening

While investigating I found 6 real (but not separately Dependabot-tracked) advisories in editors/vscode/bun.lock, all dev/test/packaging transitive deps of mocha / @vscode/vsce. Cleared via package.json overrides + lockfile refresh:

Package Advisory
serialize-javascript 6.0.2 7.0.5 GHSA-5c6j-r48x-rmvq (RCE) + GHSA-qj8w-gfj5-8c6v (DoS)
diff 7.0.0 8.0.4 GHSA-73rr-hh4g-fpgx (jsdiff DoS)
qs 6.15.1 6.15.2 GHSA-q8mj-m7cp-5q26 (DoS)
fast-uri 3.1.1 3.1.2 GHSA-v39h-62p7-jpjc (host confusion)
tmp 0.2.5 0.2.7 GHSA-ph9p-34f9-6g65 (path traversal)
brace-expansion 5.0.5 5.0.6 GHSA-jxxr-4gwj-5jf2 (DoS)

Not shipped in the extension bundle. bun audit reports no vulnerabilities; tsc, the esbuild bundle, and 155 unit tests pass.

Note on identifying the alert

The session token lacks dependabot_alerts read permission (REST returns 403), so I identified alert #2 from the push-time "1 critical" banner, osv-scanner, and #617 — which the maintainer had filed with the same diagnosis.

https://claude.ai/code/session_01UT8dyBo9sjkBDNbAbAUVgs


Generated by Claude Code

@codecov

codecov Bot commented Jun 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.49%. Comparing base (aed18aa) to head (8b067b0).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
Components Coverage Δ
Go 98.48% <ø> (ø)
TypeScript 99.53% <ø> (ø)

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

claude added 2 commits June 14, 2026 20:11
…CVE-2026-41589)

Dependabot alert #2 (the only open alert on the default branch) flags
github.com/charmbracelet/wish v1.4.7 in tools/go.mod for CVE-2026-41589 /
GHSA-xjvp-7243-rg9h — a critical (CVSS 9.6) path traversal in wish's SCP
middleware.

There is no fixed v1: the patch ships only as charm.land/wish/v2 >= 2.0.1,
a different module path, and the latest vhs (v0.11.0) still requires
wish v1.4.7 — so neither a version bump nor a `replace` resolves it in place.

wish is pulled in solely as an indirect dependency of the vhs dev tool. vhs is
never compiled into the mdsmith binary and nothing invokes
`go tool -modfile=tools/go.mod vhs` (the demo workflow installs a prebuilt vhs
release binary). Removing vhs from the tool directive and tidying drops wish
plus ~38 other indirect modules from the graph (258 -> 219), clearing the
alert with no impact on the shipped binary or CI.

tools/go.mod keeps its go 1.25.8 directive: the skill-eval workflow reads it
via go-version-file to compile a baseline worktree that requires 1.25.8, so the
floor stays pinned there now that vhs no longer forces it. golangci-lint and
gobco still build and run from the trimmed modfile.

Closes #617

https://claude.ai/code/session_01UT8dyBo9sjkBDNbAbAUVgs
Refresh editors/vscode/bun.lock to clear every advisory bun audit reports for
the extension's dev/test/packaging transitive deps (pulled by mocha and
@vscode/vsce). These are real GitHub advisories but are not separately tracked
by this repo's Dependabot; clearing them alongside alert #2 keeps the lockfile
green.

mocha constrains serialize-javascript and diff below their patched releases, so
the patched versions are forced via package.json `overrides`:

- serialize-javascript 6.0.2  -> 7.0.5   GHSA-5c6j-r48x-rmvq (RCE) + GHSA-qj8w-gfj5-8c6v (DoS)
- diff                 7.0.0  -> 8.0.4   GHSA-73rr-hh4g-fpgx (jsdiff DoS)
- qs                   6.15.1 -> 6.15.2  GHSA-q8mj-m7cp-5q26 (DoS)
- fast-uri             3.1.1  -> 3.1.2   GHSA-v39h-62p7-jpjc (host confusion)
- tmp                  0.2.5  -> 0.2.7   GHSA-ph9p-34f9-6g65 (path traversal)
- brace-expansion      5.0.5  -> 5.0.6   GHSA-jxxr-4gwj-5jf2 (DoS)

Not shipped in the extension bundle. bun audit reports no vulnerabilities;
tsc, the esbuild bundle, and 155 unit tests pass.

https://claude.ai/code/session_01UT8dyBo9sjkBDNbAbAUVgs
@jeduden
jeduden force-pushed the claude/wizardly-albattani-enivm8 branch from a0c4e48 to 8b067b0 Compare June 14, 2026 20:11
@jeduden jeduden added queue Add to a PR to enqueue it queue:active Applied automatically when a PR is in an active batch and removed queue Add to a PR to enqueue it labels Jun 14, 2026
@jeduden

jeduden commented Jun 14, 2026

Copy link
Copy Markdown
Owner Author

🟢 Merge Queue — picked up

This PR is in the queue and will be batched with other queue-labelled PRs.

Next: No action needed — you'll get another comment when CI starts on the batch. View merge queue run.

@jeduden

jeduden commented Jun 14, 2026

Copy link
Copy Markdown
Owner Author

🔵 Merge Queue — CI running

Merged into batch branch merge-queue/batch-616-1781468527 alongside #616. View CI run.

Next: No action needed — you'll be notified when CI completes.

@jeduden
jeduden merged commit 03b0e91 into main Jun 14, 2026
36 checks passed
@jeduden jeduden removed the queue:active Applied automatically when a PR is in an active batch label Jun 14, 2026
@jeduden

jeduden commented Jun 14, 2026

Copy link
Copy Markdown
Owner Author

Merge Queue — merged

This PR landed on main via commit 03b0e91. CI run that validated the merge.

Next: Done — nothing more to do here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

security: Dependabot alert #2 — charmbracelet/wish SCP path traversal (CVE-2026-41589) in tools/go.mod

2 participants